import type {
  SkuPopupEvent,
  SkuPopupInstanceType,
  SkuPopupLocaldata,
} from '@/components/vk-data-goods-sku-popup/vk-data-goods-sku-popup'
import { addCartAPI } from '@/services/cart'
import { useMemberStore } from '@/stores'
import { computed, ref } from 'vue'
import { storeToRefs } from 'pinia'

export default function () {
  // 获取用户相关仓库中的用户数据
  const { profile } = storeToRefs(useMemberStore())
  // 是否打开SKU弹窗
  const isShowSku = ref(false)
  // SKU弹窗模式
  const skuMode = ref<1 | 2 | 3>(1)
  // SKU展示的商品信息
  const localdata = ref({} as SkuPopupLocaldata)
  // SKU组件实例对象
  const skuPopupRef = ref<SkuPopupInstanceType>()

  // 计算被选中的商品的值
  const selectArrText = computed(() => {
    return skuPopupRef.value?.selectArr?.join(' ').trim() || '请选择商品规格'
  })

  // 打开SKU弹窗
  const openSkuPopup = async (mode: 1 | 2 | 3) => {
    // 重新获取商品数据
    // await getGoodsInfo()
    // 根据点击的按钮不同,展示不同的SKU模式 mode 1:都显示 2:只显示购物车 3:只显示立即购买
    skuMode.value = mode
    isShowSku.value = true
  }
  // 加入购物车(selectShop：当前选择的sku数据)
  const addCart = async (selectShop: SkuPopupEvent) => {
    // 判断用户是登录
    if (!profile.value?.token)
      // 跳转到登录页面
      return uni.navigateTo({
        url: '/pages/login/login',
      })
    // 调用加入购物车API
    await addCartAPI({
      skuId: selectShop._id,
      count: selectShop.buy_num,
    })
    // 提示加入购物车成功
    uni.showToast({
      title: '加入购物车成功',
      icon: 'none',
    })
    // 关闭SKU弹窗
    isShowSku.value = false
  }
  // 立即购买(selectShop：当前选择的sku数据 addressId 绑定事件时传递的地址ID)
  const buyNow = (selectShop: SkuPopupEvent, addressId: string) => {
    // 判断用户是登录
    if (!profile.value?.token)
      // 跳转到登录页面
      return uni.navigateTo({
        url: '/pages/login/login',
      })
    // 携带参数跳转到填写订单页面
    uni.navigateTo({
      url: `/pagesOrder/create/create?skuId=${selectShop._id}&count=${selectShop.buy_num}&addressId=${addressId}`,
    })
  }

  return {
    isShowSku,
    skuMode,
    localdata,
    skuPopupRef,
    selectArrText,
    openSkuPopup,
    addCart,
    buyNow,
  }
}
